package com.junjie.base.tool;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;

/**
 * @Author Jun jie Yi
 * @Date 2022/3/2 16:57
 */
public class GetFileName {

    public synchronized static List<String> getFilesName() throws IOException {
        String path = PropertiesUtil.getProperty("controllerPath");
        List<String> filesName = new CopyOnWriteArrayList<>();
        getFiles(path, filesName);
        return filesName.parallelStream().map(e -> e.substring(14, e.length() - 5).replaceAll("\\\\", ".")).collect(Collectors.toList());
    }

    /**
     * 递归获取某路径下的所有文件，文件夹，并输出
     */
    private static void getFiles(String clientBase, List<String> filesName) {
        File file = new File(clientBase);
        // 如果这个路径是文件夹
        if (file.isDirectory()) {
            // 获取路径下的所有文件
            File[] files = file.listFiles();
            for (int i = 0; i < files.length; i++) {
                // 如果还是文件夹 递归获取里面的文件 文件夹
                if (files[i].isDirectory()) {
                    //继续读取文件夹里面的所有文件
                    getFiles(files[i].getPath(), filesName);
                } else {
                    filesName.add(files[i].getPath());
                }
            }
        } else {
            filesName.add(file.getPath());
        }
    }

}
